package lab

// With 根据给定的多个值判断是否保留数组中的元素，返回新数组
func With[T comparable](array []T, values ...T) []T {
	keys := make(map[T]bool, len(values))
	for _, v := range values {
		keys[v] = true
	}
	var result []T
	for _, v := range array {
		if keys[v] {
			result = append(result, v)
		}
	}
	return result
}
